package net.yla.smartbus.module.ba.right.menu.mapper;

import net.yla.smartbus.module.ba.right.menu.dto.MenusTreeDTO;
import net.yla.smartbus.module.ba.right.menu.entity.MenusDO;
import net.yla.smartbus.module.ba.right.menu.query.MenusOfCount;
import net.yla.smartbus.module.ba.right.menu.query.MenusOfQuery;
import net.yla.smartbus.module.ba.right.menu.query.TaxiMenuQuery;

import java.util.List;
import java.util.Map;

/**
 * @Date: 2020-08-19 17:16
 * @Author: Being Nobody
 * @Version: 1.0
 */
public interface MenusMapper {
    int deleteByPrimaryKey(Integer menuId);

    int insert(MenusDO record);

    int insertSelective(MenusDO record);

    MenusDO selectByPrimaryKey(Integer menuId);

    int updateByPrimaryKeySelective(MenusDO record);

    int updateByPrimaryKey(MenusDO record);

    List<MenusDO> menuAll(Integer type);

    List<MenusTreeDTO> menuDTOAll(Integer type);

    // 递归查询
    int count(MenusOfCount menusOfCount);

    List<MenusDO> menusList(MenusOfQuery query);

    // 获取子菜单ID集合
    List<Integer> listOfMenuId(Integer menuId);

    // 获取父亲的记录
    MenusDO selectByParentId(Integer parent);

    List<Map<String, Object>> subMenus(Integer id);

    int updateQualifiedNameByMap(Map<Integer, String> subMenus);

    int updateQNameParent(String qName, byte[] parents, Integer menuId);

    int updateParentsByPrimaryKey(MenusDO menusDOf);

    // 更新孩子
    int updateChildren(byte[] children, Integer menuId);

    MenusDO rootByPrimaryKey(Integer menuId);

    int updateByPrimaryKey1(MenusDO menusDOs);

    Map<Integer, MenusDO> menus();

    List<Integer> selectMenuValue(List<Integer> ids);

    /**
     * 查询分组
     * @param query
     * @return
     */
    List<MenusDO> listByQuery(TaxiMenuQuery query);

    /**
     * 查询数量
     * @param query
     * @return
     */
    int countByQuery(TaxiMenuQuery query);
}